﻿#Requires AutoHotkey v1.1.33+
#SingleInstance, force
#Warn
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Include UIA_Interface.ahk
#Include UIA_Constants.ahk

^!i:: ; Ctrl + Alt + I
{
	tops := [250, 1085, 1310]

	SetWorkingDir %A_ScriptDir%
	SetTitleMatchMode, 2
	SetBatchLines, -1

	windowTitle := "Привод Бондаря"

	; Найти главное окно по заголовку
	hwndParent := WinExist(windowTitle)
	if !hwndParent
	{
		MsgBox, Window not found!
		return
	}
	WinActivate
	WinMaximize

	UIA := UIA_Interface()
	rootElement := UIA.ElementFromHandle(hwndParent)
	if !rootElement
	{
		MsgBox, "UI Automation root element not found!"
		return
	}

	IterateChildren(rootElement)
	WinRestore
	MsgBox, Закончил выравнивать окна!

	IterateChildren(element)
	{
		global UIA, tops
		; Получение всех дочерних элементов
		firstChart := element.FindFirstBy("ClassName=CandleChart") 
		tabControl := GetParentTabControl(firstChart)
		
		thumbNumber := 1
		siblingThumb := GetSiblingThumb(tabControl)
		while (siblingThumb)
		{
			if (thumbNumber = 5)
			{
				thumbNumber := 1
				continue
			}
			
			MoveThumbElement(siblingThumb, tops[thumbNumber])
			siblingThumb := GetSiblingThumb(siblingThumb)
			thumbNumber++
		}
	}

	GetParentTabControl(element)
	{
		global UIA
		parent := element

		while parent
		{
			parent := UIA.TreeWalkerTrue.GetParentElement(parent)

			if parent.ClassName = "TabControl"
				return parent
		}
	}

	GetSiblingThumb(siblingElement)
	{
		global UIA
		while (siblingElement)
		{
			siblingElement := UIA.TreeWalkerTrue.GetNextSiblingElement(siblingElement)
			if siblingElement.CurrentClassName = "Thumb"
				return siblingElement
		}
	}

	MoveThumbElement(thumbElement, endY)
	{
		; Получение текущих координат Thumb
		rect := thumbElement.CurrentBoundingRectangle
		x := rect.l
		y := rect.t
		width := rect.r- rect.l
		height := rect.b- rect.t
		
		if y + 1 = endY
			return

		; Перемещение мыши к элементу Thumb с использованием абсолютных координат экрана
		MouseMove, % x + (width / 2), % y + (height / 2)

		; Имитация перетаскивания элемента Thumb с использованием абсолютных координат экрана
		MouseClickDrag, L, % x + (width / 2), % y + (height / 2), % x + (width / 2), % endY
	}
}